package py.progweb.sgc.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "PROVEEDORES")
public class Proveedor extends EntidadBase implements Serializable {
	private static final long serialVersionUID = 1L;

	/* ATRIBUTOS DE LA CLASE */
	@Id
	@SequenceGenerator(name = "CODPROVEEDORPK_GENERATOR", sequenceName = "PROVEEDOR_COD_PROVEEDOR_PK_SEQ", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CODPROVEEDORPK_GENERATOR")
	@Column(name = "COD_PROVEEDOR_PK")
	private Integer codProveedorPk;
	@Column(name = "NOMBRE")
	private String nombre;
	@Column(name = "APELLIDO")
	private String apellido;
	@Column(name = "DIRECCION")
	private String direccion;
	@Column(name = "TELEFONO")
	private String telefono;
	@Column(name = "CEDULA")
	private Integer cedula;

	@ManyToMany
	@JoinTable(name = "PROVEEDOR_PRODUCTO", joinColumns = @JoinColumn(name = "COD_PROVEEDOR_PK", referencedColumnName = "COD_PROVEEDOR_PK"), inverseJoinColumns = @JoinColumn(name = "COD_PRODUCTO_PK", referencedColumnName = "COD_PRODUCTO_PK"))
	private List<Producto> productos;

	/* ATRIBUTOS DE RELACION */

	public Proveedor() {
		super();
	}

	public void setCodProveedorPk(Integer codProveedorPk) {
		this.codProveedorPk = codProveedorPk;
	}

	public Integer getCodProveedorPk() {
		return codProveedorPk;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getNombre() {
		return nombre;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getApellido() {
		return apellido;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getDireccion() {
		return direccion;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getTelefono() {
		return telefono;
	}

	public Integer getCedula() {
		return cedula;
	}

	public void setCedula(Integer cedula) {
		this.cedula = cedula;
	}

	@Override
	public Object getPK() {
		return getCodProveedorPk();
	}

	public List<Producto> getProductos() {
		return productos;
	}

	public void setProductos(List<Producto> productos) {
		this.productos = productos;
	}

	@Override
	public String toString() {
		return "Proveedor: cod:" + this.getPK() + "; nombre: "
				+ this.getNombre();
	}
}
